package nerdydog.domoHomeProd; import java.util.ArrayList; import java.util.List; import nerdydog.domoHomeProd.db.ConfDatabase; import nerdydog.domoHomeProd.object.Actuator; import android.content.Context; import android.graphics.Color; import android.util.Log; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.View.OnTouchListener; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; public class DnDAdapter extends BaseAdapter { private static List<Actuator> items = null; private Context context = null; public static View emptyView = null; private static Actuator emptyEntry = ConfDatabase.aryActuatorsSelectedForActions.get(0); public DnDAdapter(Context context) { // TODO Auto-generated constructor stub this.context = context; // buildList(); } public List<Actuator> getItems() { return items; } public void setList(List<Actuator> items) { this.items = items; } public int getCount() { // TODO Auto-generated method stub return items.size(); } public Object getItem(int position) { // TODO Auto-generated method stub return items.get(position); } public long getItemId(int position) { // TODO Auto-generated method stub return 0; } public View getView(final int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub Actuator entry = items.get(position); LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); final View view = inflater.inflate(R.layout.orderdomoitemadapter, parent, false); view.setTag(entry); TextView txt = (TextView)view.findViewById(R.id.typeorderdomoinfo1); txt.setText(entry.getName()); ImageView imageType = (ImageView)view.findViewById(R.id.iconorderdomoitem); if(entry.getType().equals(new String(ConfDatabase.TYPE_GATE))) imageType.setImageResource(R.drawable.gate); if(entry.getType().equals(new String(ConfDatabase.TYPE_DOOR))) imageType.setImageResource(R.drawable.door); if(entry.getType().equals(new String(ConfDatabase.TYPE_WATTMETER))) imageType.setImageResource(R.drawable.lightning); if(entry.getType().equals(new String(ConfDatabase.TYPE_LIGHT))) imageType.setImageResource(R.drawable.light); if(entry.getType().equals(new String(ConfDatabase.TYPE_PLUG))) imageType.setImageResource(R.drawable.eletric); if(entry.getType().equals(new String(ConfDatabase.TYPE_TEMPERATURE))) imageType.setImageResource(R.drawable.temperature); if(entry.getType().equals(new String(ConfDatabase.TYPE_ACTION))) imageType.setImageResource(R.drawable.actions); final ImageView img = (ImageView)view.findViewById(R.id.iconorderdomoitem); img.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub Log.v(getClass().toString(),"Icon onTouch. Selected position: " + position); DragAndDrop.listView.moveEntry = items.get(position); emptyEntry = items.get(position); buildEmptyView(DragAndDrop.listView.moveEntry); items.remove(position); items.add(position, emptyEntry); DragAndDrop.listView.invalidateViews(); DragAndDrop.listView.setEnabled(false); DragAndDrop.listView.isMoveFlag = true; DragAndDrop.listView.moveView = view; DragAndDrop.listView.movedPosition = position; return false; } }); if (entry.getName().equals("Empty entry")) { img.setVisibility(View.INVISIBLE); txt.setVisibility(View.INVISIBLE); } return view; } private void buildEmptyView(Actuator moveentry) { LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); //emptyView = inflater.inflate(R.layout.emptyview, null, false); emptyView = inflater.inflate(R.layout.orderdomoitemadapter, null, false); TextView txt = (TextView)emptyView.findViewById(R.id.typeorderdomoinfo1); txt.setText(moveentry.getName()); txt.setTextColor(Color.WHITE); } public static void addEntry(int pos) { items.add(pos, DragAndDrop.listView.moveEntry); DragAndDrop.listView.invalidateViews(); } public static void addEmptyEntry(int pos) { items.add(pos, emptyEntry); DragAndDrop.listView.invalidateViews(); } public static void removeEmptyEntry() { items.remove(emptyEntry); DragAndDrop.listView.invalidateViews(); } }